import { insertCart, findCartList, deleteCart } from '@/api/cart'

const cart = {
  namespaced: true, // 命名空间
  state: {
    cartList: [] // 购物车列表
  },
  mutations: {
    setCartFn (state, list) {
      state.cartList = list
    }
  },
  actions: {
    // 加入购物车
    async setCartApi (ctx, { skuId, count }) {
      // 1. 调用添加购物车接口
      await insertCart({ skuId, count })
      // 2. 调用获取购物车列表接口 -> list
      const res = await findCartList()
      // 3. 调用mutation函数把拿到的list放进去
      ctx.commit('setCartFn', res.data.result)
    },
    // 删除购物车
    async DelCartApi (ctx, ids) {
      // 1. 调用删除接口
      await deleteCart(ids)
      // 2. 调用获取购物车列表接口 -> list
      const res = await findCartList()
      // 3. 调用mutation函数把拿到的list放进去
      ctx.commit('setCartFn', res.data.result)
    }
  },
  getters: {
    // 商品总数 = cartList中每一项的count之和
    allCount (state) {
      return state.cartList.reduce((a, c) => a + c.count, 0)
    },
    // 总钱数 = cartList中每一项的count * price之和
    allPrice (state) {
      return state.cartList.reduce((a, c) => a + c.count * c.price, 0)
    }
  }
}
export default cart
